package com.fckbug.dao;

import java.util.List;

public interface QADAO {
	/**
	 * 保存问题
	 * @param title
	 * @param content
	 * @param userid
	 * @return null时保存失败，否则返回本条记录的id
	 */
	Integer saveQ(final String title, final String content, final int userid);
	
	/**
	 * 保存qtime表，出了qId，其他值都为默认值
	 * @param qId
	 * @return
	 */
	Integer saveQT(final Integer qId);
	
	/**
	 * 查询问题
	 * @param id
	 * @return
	 */
	List getQ(final Integer id);
	
	/**
	 * 保存答案
	 * @param qId
	 * @param content
	 * @param userid
	 * @return 
	 */
	Integer saveA(final long qId, final String content, final int userid);
	
	/**
	 * 保存评论
	 * @param qaId
	 * @param type
	 * @param content
	 * @param userid
	 * @return 
	 */
	Integer saveC(int qaId, int type, String content, int userid);
	
	/**
	 * 保存atime表，出了aId，其他值都为默认值
	 * @param aId
	 * @return
	 */
	Integer saveAT(final Integer aId);
	
	
	/**
	 * 查询问题解答
	 * @param qId
	 * @return
	 */
	List getA(final Integer qId);
	
	//保存标签 TODO
	int saveTag(int qid);
	
	
	List getQTime(final Integer qId);
	
	List getATime(final Integer aId);
	
	/**
	 * 修改回答mark次数
	 * @param aId
	 * @param increment
	 * @return
	 */
	Integer alterATime(int aId, int increment);
	/**
	 * 修改问题mark次数
	 * @param qId
	 * @param increment
	 * @return
	 */
	Integer alterQTime(int qId, int increment);
	
	/**
	 * 修改查看次数，每次修改都是+1
	 * @param qId
	 * @param increment
	 * @return
	 */
	Integer alterQVTime(int qId);
	
	/**
	 * 修改问题favorite次数
	 * @param qId
	 * @param increment
	 * @return
	 */
	Integer alterFTime(final int qId, final int increment);
	
	/**
	 * 此表保存mark某answer的用户，防止重复mark
	 * @param userId
	 * @param aId
	 * @return
	 */
	Integer saveUserAMark(int userId, int aId) throws Exception;
	/**
	 * 此表保存mark某question的用户，防止重复mark
	 * @param userId
	 * @param qId
	 * @return
	 */
	Integer saveUserQMark(int userId, int qId) throws Exception;
	/**
	 * 此表保存favorite某question的用户，防止重复mark
	 * @param userId
	 * @param qId
	 * @return
	 */
	Integer saveUserFMark(int userId, int qId) throws Exception;
	
	List getComment(int type, int qaId);
	
	/**
	 * 查询未回答的问题
	 * @param start
	 * @param offset
	 * @return
	 */
	List getUnAnsweredQ(int start, int offset);
	
	/**
	 * 查看所有问题，按view的次数倒叙排
	 * @param start
	 * @param offset
	 * @return
	 */
	List getAllQ(int start, int offset);
}
